package com.cloud.xtools.user.domain.request.admin;

import com.cloud.xtools.common.validator.annotation.FieldUnique;
import com.cloud.xtools.common.validator.annotation.SizeIfExist;
import com.cloud.xtools.user.domain.entity.User;
import jakarta.validation.constraints.Email;
import lombok.Data;

import java.time.LocalDateTime;

/**
 * @author Daixinguo
 */
@Data
public class UserUpdateRequest {
    private Long id;
    // 用户名
    private String name;
    // 账号
    @FieldUnique(entity = User.class, field = "username", ignoreField = "id", message = "账号已存在")
    private String username;
    // 手机号
    // 手机号唯一性验证并忽略指定数据
    // ignoreField = "id" 默认为 id，
    // 配置 ignoreField 忽略指定字段作为查询条件的数据进行检查，如：id，配合 path 参数中 id 的值（如：id 值为 1）检查唯一性时会忽略数据库表中 id = 1 的数据。通常用于更新需要唯一性验证的字段时使用
    @FieldUnique(entity = User.class, field = "mobile", ignoreField = "id", message = "手机号已存在")
    public String mobile;
    // 邮箱
    @FieldUnique(entity = User.class, field = "email", ignoreField = "id", message = "邮箱已存在")
    @Email
    private String email;
    // 密码
    @SizeIfExist(min = 6, max = 16)
    private String password;
    // 更新时间
    private final LocalDateTime updatedAt = LocalDateTime.now();
}
